From: Florian Müllner Date: Fri, 21 Sep 2012 14:00:44 +0000 (+0200) Subject: st-texture-cache: Add API to remove cache data X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5743 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=dc9ad8df8074;p=gnome-shell.git st-texture-cache: Add API to remove cache data The current API assumes that image data loaded from files remains valid during the life time of the shell. This assumption is mostly valid for image files we provide ourselves (with the exception being designers working on those files), but not necessarily for "external" files - provide API to explicitly remove cached data associated with a URI for those cases. https://bugzilla.gnome.org/show_bug.cgi?id=679268 --- diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c index f76543e65..211143254 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -94,6 +94,33 @@ st_texture_cache_class_init (StTextureCacheClass *klass) G_TYPE_NONE, 0); } +/** + * st_texture_cache_clear_uri: + * @cache: A #StTextureCache + * @uri: URI of cached object + * + * If the given @uri is known to have been modified + * externally, this function may be used to invalidate + * the in-memory cache. + */ +void +st_texture_cache_clear_uri (StTextureCache *cache, + const char *uri) +{ + char *key; + + g_return_if_fail (ST_IS_TEXTURE_CACHE (cache)); + g_return_if_fail (uri != NULL); + + key = g_strconcat (CACHE_PREFIX_URI, uri, NULL); + g_hash_table_remove (cache->priv->keyed_cache, key); + g_free (key); + + key = g_strconcat (CACHE_PREFIX_URI_FOR_CAIRO, uri, NULL); + g_hash_table_remove (cache->priv->keyed_cache, key); + g_free (key); +} + /* Evicts all cached textures for named icons */ static void st_texture_cache_evict_icons (StTextureCache *cache) diff --git a/src/st/st-texture-cache.h b/src/st/st-texture-cache.h index fc7dac294..b5c563b84 100644 --- a/src/st/st-texture-cache.h +++ b/src/st/st-texture-cache.h @@ -68,6 +68,9 @@ GType st_texture_cache_get_type (void) G_GNUC_CONST; StTextureCache* st_texture_cache_get_default (void); +void st_texture_cache_clear_uri (StTextureCache *cache, + const gchar *uri); + ClutterActor * st_texture_cache_load_sliced_image (StTextureCache *cache, const gchar *path,